package com.huangsm.book.designmodel.collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;

/**
 * 核心数据结构List对比
 * @author huang
 * @PACKAGE_NAME com.huangsm.book.designmodel.collection
 * @PROJECT_NAME concurrence
 * @date 2019/2/15
 */
public class ListDemo {
    public static void main(String[] args) {
        //对于添加arraylist效率远远高于LinkedList
        //这里使用的JVM参数为-Xmx512M-Xms512M
        long start = System.currentTimeMillis();
       ArrayList<Object> list = new ArrayList<>();
        //LinkedList<Object>list=new LinkedList<>();
        Object o = new Object();
        for (int i = 0; i < 1000000; i++) {
            list.add(o);
        }
        System.out.println(System.currentTimeMillis()-start);
        /**
         * 如果不使用JVM参数的话，LinkedList和ArrayList差异更加，可见
         * LinkedList对堆内存和GC的要求更高。
         * 使用ArrayList加上初始容量会大大提高效率，因为ArrayList如果没有指定容量默认为10当超过10后
         * 会调用扩容算法，本质是进行一次内存复制，因此效率会大大降低
         */


    }
}
